RCR Map Making Reference Guide
This page will contain all of the necessary game mechanics and quirks relating to map making. Come back to visit this page every so often! '''Information regarding maps will be updated here. Required Materials For a map to be considered a normal racing map, it requires the following: *A part called "startingbrick" (CanCollide should be true) *A part called "spawn" (CanCollide doesn't matter, neither does transparency) *A part called "endpart" (CanCollide MUST be false) Although those are requirements to have a map be considered a normal racing map, all parts in the map except the spawn part can be excluded for other purposes, such as minigames. You can also code your map to detect when the startingbrick part changes its cancollide property though I do not recommend doing this (Custom animations of door openning, etc). Custom Coding Properties Currently, there are only 2 pre-built custom properties. However, you can do a lot with this. Custom Scoring Systems To implement your own scoring system into a map, use this template code for tracking chair height! '''Map/MinigameBrain (Script) -- make it so stats can be modified by this script local mg = require(script.Parent.MGStats) -- make the score table so that the game can register the existence of a custom minigame mg.score={} -- define that the map is "ninja" difficulty (101%). This is optional. mg.ninja=true scoreboard = function(pl) -- this is the function that tracks the score for the character. local trackScore = function(char) -- This checks if the character is valid, the character has a Torso & Chair, and also if the start gate has been openned. if char and char:FindFirstChild("Torso") and char:FindFirstChild("Chair") and script.Parent.startingbrick.CanCollide false then -- This sets the score according to the user's height compared to the TestObject part in the map times 12.225. mg.scorepl.Name=math.max(mg.scorepl.Name, (char.Torso.Position.Y-script.Parent.TestObject.Position.Y)*12.225) -- This rounds the number down for a better displaying format. mg.scorepl.Name=math.floor(mg.scorepl.Name) end end -- This sets the user's score to 0. mg.scorepl.Name=0 -- This checks if the player's character property is valid. if pl.Character then coroutine.resume(coroutine.create(function() print("Began score tracking") repeat wait() until pl.Character and pl.Character:FindFirstChild("Chair") while wait() and script and script.Parent and script.Parent.Parent and script.Parent.Parent.Parent and pl.Character and pl.Character:FindFirstChild("Humanoid") and pl.Character.Humanoid.Health > 0 do -- while all the character properties are valid, execute the "trackScore" function on line 11. trackScore(pl.Character) end print("Ended score tracking") end)) end pl.CharacterAdded:connect(function(char) -- this is a duplicate of the coroutine for new characters that spawn in. print("Began score tracking") repeat wait() until pl.Character and pl.Character:FindFirstChild("Chair") while wait() and script and script.Parent and script.Parent.Parent and script.Parent.Parent.Parent and pl.Character and pl.Character:FindFirstChild("Humanoid") and pl.Character.Humanoid.Health > 0 do trackScore(char) end print("Ended score tracking") end) end for _,pl in pairs(game.Players:GetPlayers()) do -- executes "scoreboard" on all players. scoreboard(pl) end game.Players.PlayerAdded:connect(function(pl) -- executes "scoreboard" on all new joining players. scoreboard(pl) end) This script will make it so when you die, it considers it a win. It also makes it so that when the time is up, it also considers it a win. There is a "pointtype" property displayed here that also lets you define a custom unit displayed on the nameplate when the map is played. "onload" makes the objective display something different on the "Objective: " portion of the map loading. The only problem currently is that this ModuleScript needs to be called "MGStats". Map/MGStats (ModuleScript) -- stats can be stored here by different server scripts, they will be recorded and shown properly. local minigamestats = { -- on chair falling off or character death ondeath=function(vars, root, functions, player) if not vars.minigame.scoreplayer.Name then return end if functions.win then functions.win(player, vars.minigame.scoreplayer.Name) end end, -- when time runs out onend=function(vars, root, functions, player) if not vars.minigame.scoreplayer.Name then return end if functions.win then functions.win(player, vars.minigame.scoreplayer.Name) end end, -- Unit of display pointtype="Height", onload=function(vars, root, functions) -- What the objective displays as, this can be anything you want vars.core.objective = "Get as much height as possible before falling or 120 seconds!" end } -- normal return because module return minigamestats Tournament Minigame For a far more simplistic implementation, there exists the coin collector gametype. To start making your own coin collector minigame, Insert a StringValue in your map called "IsMinigame". This will declare that the map is a minigame. Then, input "Tournament" into its value. Third, put a part inside of the map that covers the top area of it, called "coins". "coins" must be its exact '''name. Then, put a script inside of it called "MOD". This is it's source. You do not need to worry with what it does. '''Map/coins/MOD (Script) wait(1) while script.Parent.Parent:FindFirstChild("startingbrick") ~= nil do wait(0.1) end local coinDir = game.Lighting.Coins local Button = script.Parent local coins = { {"Coin5", 3}, {"Coin10", 6}, {"Coin20", 25}, {"Coin50", 50} } while true do wait(0.5) local decision = nil for i = 1, #coins do if math.random(1, coinsi2) 1 and decision nil then decision = coinsi1 end end if decision nil then decision = "Coin1" end local c = coinDirdecision:Clone() c.CFrame = Button.CFrame * CFrame.new(math.random(-Button.Size.x/2, Button.Size.x/2), 0, math.random(-Button.Size.z/2, Button.Size.z/2)) c.Parent = Button.Parent end Documentations Although these documentations state that these are rules, make note of the fact that all of these rules are just how maps should be done, and not how they have to be done. If you feel as though your map would be better off breaking some of these rules, then treat these rules as guidelines''' '''instead. Here is the text put in the Entities Kit: -- **IMPORTANT** NO DRAG RACES!!!!!!!!!!!!!!!!!!!!!!!!! Thanks for using the basic map making pack! The descriptions of each part is inside the blocks. If the blocks dont have a description script in them then you may use them for the track. Otherwise, Make sure there is only ONE of them. We will decline your track if everything is named 'endpart' or 'startingbrick' or 'spawn'. How many bricks your race should be: 200 to 1000 (can be larger for more detailed races.) Max length of a race track: 90 seconds. Race tracks should never take longer than this to complete unless it's some sort of marathon which is a challenge. Necessary notes: - Do not send us a track that has extremely dangerous hammers and lava and almost no way to beat it (Make sure the level is playable for all skill levels). - Please make sure the track is long enough (20 seconds minimum, any less and it is rejected). - Make sure NO slopes are too steep. This is the most frequent source of map rejections. - Test your track with a skateboard without jumping please if you do not have a chair! - The maps that get accepted the most are the ones who have the most detail. - DO. NOT. PUT. PLACES (1st second third) AT THE END! NO EXCEPTION! - You are recommended to script the map if you can. :) - Do not use the spawn included without modifying at least its color and size. - Do not use the StartingBrick included without modifying at least its color. - Spend more than 10 minutes making it. We can easily identify the people who took less. - Don't take credit for the map inside the map, we name the map with your name in it. - Feel free to call your parts "Construction Part" if you would like, that would signify that you're actually reading this -_- - If you can, name each block according to what use they have. If not, just leave it. - Do not include decal advertisements or they will be removed. HOW TO UPLOAD YOUR MAP: 1) Make the map 2) Your map must be virus scanned before uploading. *You no longer need to do this, but just incase you need a scanner: The appropriate Virus scanner: http://www.roblox.com/x-item?id=57224606 3)Make the map a model and make it public domain 4)PM SpeedySeat with the subject "MAP MADE" with the link of the map to take. Thank you very much for reading this documentation! ~Nickcool9999 (writing the documentation and placing the parts in) and the rest of the awesome Chair race builders and admins! :) --[[ As a moderated map submission system, we look for only the best maps or ones which qualify. Chair racing has a RATING, from 1 to 100, called a QUALITY RATING, or QR. When a map is judged it is given a QR and if the QR is close enough to the minimum, 85%, you are given a chance to update your map to meet the requirement and have it added to chair racing without total rejection. Titles of messages I may use: Accepted - Your map will be added to Chair Racing in the next version. Pending - Your map needs to have changes made by you in order for it to be added. Changed heavily - Your map has been changed majorly to a point where both you and speedyseat takes credit for the map. This is an extremely rare rating and if you get it your map will be added to chair racing along with the changes made. Rejected - Your map did not meet the requirement nor get close to it. --------Your map will be judged based off of this chart.-------- What we are looking for: > Meets Minimum part requirement (200) - +20% > Contains a variety of colors or fitting colors - +15% > Constuction parts used without building off of the template - +5% > Bricks are evenly placed - +10% > Map has enough spacing for 6 racers - +10% > Does not surpass the maximum parts (2000) - +10% > No important parts of your map needed to be removed - +10% > No unneeeded Humanoid objects - +5% > No unneeded decals - +5% > Not built off of the template - +9% > No errors from the list below - +1% > Well-hidden easter egg area (PM me where it is too if included) - Bonus 3% Common errors for map submissions include: > Objectionnable poses/innapropriate content - -15% (Goes below requirement) > Too many invisible blocks - -10% > Not enough space for a single racer to race on - -15% > Not enough obstacles - -5% > Drag race (No turns in the map, just one long brick) - -50% > Unbarricaded Spawn location (People can jump around the start gate) - -10% > Cheat (Accidental way to skip most of your map) within your map - -5% > Shortcut which is not hidden enough and/or travels too far in the map - -5% > Too many spherical objects - -5% > Race doesn't last at-least 20 seconds - -20% > Too many powerup boxes in one area - -5% > Not enough powerup boxes in one area - -5% > Speed pads which are not allowed are used - -5% ]]